Virtual memory is a methodology which allows a computer system having a fixed amount of physical memory storage to simulate a system having a substantially greater storage capacity. As application programs expand in complexity and data files expand, the need for greater memory facility increases. With the proliferation of interfaces and operating systems, such as Microsoft Windows, which allow multitasking, the physical memory constraints of personal computer systems have become insufficient. Virtual memory allows memory-intensive applications to be performed on a machine without the physical memory otherwise required.
In a conventional virtual memory system, some method is established, usually through the design of the hardware on which the system is implemented, for allocating a block or part of the memory address space of the system's central processing unit's maximum addressing capability. Actual physical memory resources, being the actual storage required to make the address space useful to computer instructions executing in the processor, do not need to exist in a physical sense in the block being allocated. Hence, the term "virtual memory"--the block of allocated memory exists as a logical entity only. This permits the instructions to be performed as if the memory was physically present.
Through a variety of methodologies, the hardware of the central processor or associated hardware (a Memory Management Unit (MMU)) detects attempts to access these virtual memory blocks within the virtual address space (VAS) of the computing environment. When such an access is detected, control is transferred, again through a variety of known techniques, to a specific part of the operating system designed to handle such requests. This part of the operating system, called the virtual memory control program (VMCP), must then either suspend or terminate the process that is attempting to access memory in the virtual address space which has no physical memory resources assigned to it, or the VMCP must assign physical memory resources to the portion of the virtual address space being accessed so that the access may be completed normally.
By allocating physical memory only on demand, such a procedure allows a limited amount of physical memory resources to be assigned to a vastly greater virtual address space, providing programmers with great flexibility in creating programs which sprawl over great landscapes, while necessitating physical resources sufficient only for some subset of the central processor's capability.
A conventional virtual memory system usually extends this capability further by creating additional physical memory resources through the harnessing of some external storage device. The external storage medium is used to store the contents of parts of the physical memory which have been identified by the virtual memory control program, through a variety of means, as being non-critical or in some fashion not imminently needed. Thus, the VMCP stores unneeded portions of the physical memory on the external storage medium, and retrieves them when physical memory is abundant, or when an access by some part of the computer instruction stream necessitates the retrieval of the contents of the virtual address space memory block.
Newly designed microprocessors have brought virtual memory systems to the desktop, allowing operating environments to take advantage of virtual memory schemes formerly the realm of mainframe and super minicomputers. One such system is the Windows 386 Enhanced Mode operating environment offered by Microsoft Corporation of Redmond, Wash.
The portion of the Windows operating environment designed to handle the management of memory is a standard VMCP in which the page table of the Intel 80386 microprocessor is used to control access to the virtual address space of the microprocessor so that the processor causes a fault condition to occur whenever an access is attempted to a section of the virtual address space which does not have physical memory associated with it. The VMCP part of the operating environment captures the fault condition and either terminates the task, suspends the task, or provides the necessary resource to allow the task to proceed.
A problem occurs in all virtual memory control programs, however, when the resources required substantially exceed the physical resources available on the system. This can occur whenever the physical memory resources available to the VMCP fall short of the active memory needed, such as by a complex task being performed by the system, or by a large number of concurrent tasks being executed within the system. In this event, the VMCP will either abort attempts to allocate memory, due to a lack of non-critical memory which can be removed to secondary storage or due to a shortage of total, primary and secondary storage; or, alternatively, the VMCP will be forced to continuously store and retrieve large sections of physical memory from the secondary storage medium in rapid succession.
In the first instance, the system becomes unable to perform a designated task, and in the second instance, the system is forced to spend an inordinate portion of its capacity copying to and from the secondary storage system. In the case of a typical personal computer system, the secondary storage system is a personal computer fixed (or hard) disk which operates at speeds which make the first alternative of terminating processes seem almost preferable. The problem is further aggravated by the physical constraints introduced by the architecture of such personal computer fixed disk systems. In most such systems the disk may be inaccessible during certain, "higher priority" operations, such as a timer interrupt or a keyboard, event. This further slows the response of the system. And in any event, the disk is too slow in accessing to support the relocation of information that is accessed at a speed or frequency higher than the fairly low transfer rate of such fixed disk devices. This creates a greater demand, in certain applications, for non-movable, critical physical memory.